/*
给定一颗二叉树，若二叉树的某个结点，其左子树所有节点之和与右子树所有结点之和相等，
则称该节点为平衡节点，编写函数，判断节点值为整数的二叉树是否存在平衡结点。
*/
typedef struct node 
{
	int data;
	struct node *left,*right;
}*Tree;
int sum_key(Tree t)  //求二叉树中所有结点之和
{
	if(t!=NULL)
	{
		return t->data+sum_key(t->left)+sum_key(t->right);  //如果题目问的结点数目之和相等，将t->data改为1，可得到结点数目和
	}
	else
	{
		return 0;
	}
}
bool Find_balance(Tree t)
{
	if(t!=NULL)
	{
		if(t->left!=NULL&&t->right!=NULL)
		{
			if(sum_key(t->left)==sum_key(t->right))  //当前结点是平衡结点
				return true;
		}
		return Find_balance(t->left)||Find_balance(t->right);
	}
	else  //空节点
		return false;
}



int sum_key(BiTree t){
	if(t){
		return t->data+sum_key(t->left)+sum_key(t->right);
	}else{
		return 0;
	}
}
bool Find_balance(BiTree root){
	if(root){
		if(root->left!=NULL && root->right!=NULL){
			if(sum_key(root->left)==sum_key(root->right))
				return true;
		}
		return Find_balance(root->left)||Find_balance(root->right);
	}else
		return false;
}
